﻿using Library.Collections.Generic;
using Library.Collections.Specialized;
using System;
using System.Xml;
using System.Xml.XPath;

namespace Library.Xml.XPath
{
    internal class XmlTreeNavigator<TNode> : XPathNavigator
        where TNode : ITreeReadOnly<TNode>, ITreeRoot<TNode>, ITreeParent<TNode>, ILinkedListNode<TNode>, IHasAttributesReadOnly<Uri, string>, IHasName<Uri>, IHasValueReadOnly<string>
    {
        TNode node;
        IDictionaryVectorReadOnly<Uri, string> attributes;

        public XmlTreeNavigator(TNode node)
        {
            this.node = node;
            this.attributes = null;
        }

        public override string BaseURI
        {
            get { throw new NotImplementedException(); }
        }

        public override XPathNavigator Clone()
        {
            throw new NotImplementedException();
        }

        public override bool IsEmptyElement
        {
            get { throw new NotImplementedException(); }
        }

        public override bool IsSamePosition(XPathNavigator other)
        {
            throw new NotImplementedException();
        }

        public override string LocalName
        {
            get { throw new NotImplementedException(); }
        }

        public override bool MoveTo(XPathNavigator other)
        {
            throw new NotImplementedException();
        }

        public override bool MoveToFirstAttribute()
        {
            throw new NotImplementedException();
        }

        public override bool MoveToFirstChild()
        {
            throw new NotImplementedException();
        }

        public override bool MoveToFirstNamespace(XPathNamespaceScope namespaceScope)
        {
            throw new NotImplementedException();
        }

        public override bool MoveToId(string id)
        {
            throw new NotImplementedException();
        }

        public override bool MoveToNext()
        {
            throw new NotImplementedException();
        }

        public override bool MoveToNextAttribute()
        {
            throw new NotImplementedException();
        }

        public override bool MoveToNextNamespace(XPathNamespaceScope namespaceScope)
        {
            throw new NotImplementedException();
        }

        public override bool MoveToParent()
        {
            throw new NotImplementedException();
        }

        public override bool MoveToPrevious()
        {
            throw new NotImplementedException();
        }

        public override string Name
        {
            get { throw new NotImplementedException(); }
        }

        public override XmlNameTable NameTable
        {
            get { throw new NotImplementedException(); }
        }

        public override string NamespaceURI
        {
            get { throw new NotImplementedException(); }
        }

        public override XPathNodeType NodeType
        {
            get { throw new NotImplementedException(); }
        }

        public override string Prefix
        {
            get { throw new NotImplementedException(); }
        }

        public override string Value
        {
            get { throw new NotImplementedException(); }
        }
    }
}